'''
1 求奇数分之一序列前N项和

计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中按照“sum = S”的格式输出部分和的值S，精确到小数点后6位。题目保证计算结果不超过双精度范围。
'''

print("sum = {:.6f}".format(sum([float(1/(2*i-1)) for i in ran

'''
2 求平方与倒数序列的部分和
对两个正整数m和n（m≤n）编写程序，计算序列和m
​2
​​ +1/m+(m+1)
​2
​​ +1/(m+1)+⋯+n
​2
​​ +1/n。

输入格式:
输入在一行中给出两个正整数m和n（m≤n），其间以空格分开。

输出格式:
在一行中按照“sum = S”的格式输出部分和的值S，精确到小数点后六位。题目保证计算结果不超过双精度范围。
'''

m,n=map(eval,input().split())
print("sum = {:.6f}".format(sum([i**2+1/i for i in range(m,n+1)])))

'''
3 输出华氏-摄氏温度转换表 (10分)
输入2个正整数lower和upper（lower≤upper≤100），请输出一张取值范围为[lower，upper]、且每次增加2华氏度的华氏-摄氏温度转换表。

温度转换的计算公式：C=5×(F−32)/9，其中：C表示摄氏温度，F表示华氏温度。

输入格式:
在一行中输入2个整数，分别表示lower和upper的值，中间用空格分开。

输出格式:
第一行输出："fahr celsius"

接着每行输出一个华氏温度fahr（整型）与一个摄氏温度celsius（占据6个字符宽度，靠右对齐，保留1位小数）。

若输入的范围不合法，则输出"Invalid."。
'''
lower,upper=map(eval,input().split())
if lower>upper:
    print("Invalid.")
else:
    print("fahr celsius")
    i=lower
    while i<=upper:
        print("{:d}{:>6.1f}".format(i,5*(i-32)/9))
        i=i+2

# 4 判断素数
def isprime(num):
    if num<=1:
        return False
    elif num==2:
        return True
    else:
        for i in range(2,num):
            if num%i==0:
                return False
        return True  
sum=eval(input())
for j in [eval(input()) for i in range(0,sum)]:
    if(isprime(j)):
        print("Yes")
    else:
        print("No")

'''
5 求整数段和
输出从A到B的所有整数以及这些数的和。

输入格式：
输入在一行中给出2个整数A和B，其中−100≤A≤B≤100，其间以空格分隔。

输出格式：
首先顺序输出从A到B的所有整数，每5个数字占一行，每个数字占5个字符宽度，向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
'''
A,B=map(eval,input().split())
numsum=sum([i for i in range(A,B+1)])
i,sum=0,B-A+1
while A<=B:
   print("{:>5d}".format(A),end="")
   A+=1
   i+=1
   if i%5==0:
       i=0
       print("")
if sum%5==0:
   print("Sum = {:d}".format(numsum)) 
else:
   print("\nSum = {:d}".format(numsum))


'''
6 换硬币
将一笔零钱换成5分、2分和1分的硬币，要求每种硬币至少有一枚，有几种不同的换法？

输入格式:
输入在一行中给出待换的零钱数额x∈(8,100)。

输出格式:
要求按5分、2分和1分硬币的数量依次从大到小的顺序，输出各种换法。每行输出一种换法，格式为：“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
'''
n=eval(input())
count=0
for c5 in range(n//5,0,-1):
   for c2 in range(n//2,0,-1):
      for c1 in range(n,0,-1):
         if(c5*5+c2*2+c1==n):
           print('fen5:{:d}, fen2:{:d}, fen1:{:d}, total:{:d}'.format(c5,c2,c1,c1+c2+c5))
           count=count+1
print('count = {:d}'.format(count))

'''
7 求矩阵的局部极大值
给定M行N列的整数矩阵A，如果A的非边界元素A[i][j]大于相邻的上下左右4个元素，那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

输入格式：
输入在第一行中给出矩阵A的行数M和列数N（3≤M,N≤20）；最后M行，每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式：
每行按照“元素值 行号 列号”的格式输出一个局部极大值，其中行、列编号从1开始。要求按照行号递增输出；若同行有超过1个局部极大值，则该行按列号递增输出。若没有局部极大值，则输出“None 总行数 总列数”。
'''
M,N=list(map(eval,input().split()))
flag=1
Cube=[[j for j in list(map(eval,input().split()))] for i in range(0,M)]
for i in range(1,M-1):
    for j in range(1,N-1):
        if Cube[i][j]>max([Cube[i-1][j],Cube[i+1][j],Cube[i][j+1],Cube[i][j-1]]):
            flag=0
            print(Cube[i][j],i+1,j+1)
if flag:
    print("None",M,N)


'''
8 矩阵对角线求和

把数据输入到一个n×n的方阵中，输出该矩阵，并求它两条对角线上元素之和。

注意：如果主对角线和次对角线有相交元素，求和时相交元素只加一次。

输入格式:
先输入行数n（n不超过10）

再输入n×n个整数。

输出格式:
先以矩阵形式输出该方阵，每个数占3格

再输出sum = 和值。
'''
n=int(input())
lst=list()
for i in range(n):
    lst.append(list(map(int,input().split())))
    
s=0
for i in range(n):
  for j in range(n):
      print('%3d'%lst[i][j],end='\n' if j==n-1 else '')
      if i==j or i+j==n-1:
          s=s+lst[i][j]
print('sum = %d'%s)

# 杨辉三角
def triangles():
  l = [1]
  while True:
    yield l
    l = [1] + [l[i] + l[i+1] for i in range(len(l)-1)] + [1]
n=int(input())
i = 0
for t in triangles():
  for s in t:
    print("%4d"%s, end='')
  print()
  i = i+1
  if i == n:
    break

'''
10 求误差小于输入值的e的近似值
自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。ei代表前i项求和。输入误差范围error,当
ei+1-ei<error,则表示e的近似值满足误差范围。

输入格式:
在一行输入误差范围。

输出格式:
在一行输出e的近似值（保留6位小数）。
'''
import math 
error,a3,sum1,sum2=eval(input()),2,1,2
while(sum2-sum1)>=error:
    sum1,sum2=sum2,sum1
    sum2=sum1+1/math.factorial(a3)
    a3+=1
print("{:.6f}".format(sum2))
